﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Data;
using System.IO;
namespace Projet_Final_ASP
{
    public class AccesBD
    {
        private static string Database = null;
        public static string ConnectionString = null; 
        private static OleDbCommand oledbcmd;

        public static void LoadDB(string path)
        {
            Database = path;
            ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + // Chaîne de connection pour la base de données
                "Data Source=" + Database + ";Persist Security Info=True;";
        }

        public static List<string> ListerAchats(string Client)
        {            
            List<string> liste = new List<string>();
            string condition = "Client LIKE '" + Client + "'";
            OleDbConnection cn = new OleDbConnection(ConnectionString);            
            oledbcmd = new OleDbCommand("SELECT * FROM Paniers WHERE "+ condition, cn);
            OleDbDataAdapter oledbda = new OleDbDataAdapter(oledbcmd);
            DataSet ds = new DataSet();
            oledbda.Fill(ds);
            
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                string produits = ds.Tables[0].Rows[i]["Produits"].ToString();

                liste.Add(produits);     
            }

            return liste;
        }

        public static int DernierNo()
        {
            int noPanier = 0;
            OleDbConnection cn = new OleDbConnection(ConnectionString);
            oledbcmd = new OleDbCommand("SELECT * FROM Paniers", cn);
            OleDbDataAdapter oledbda = new OleDbDataAdapter(oledbcmd);
            DataSet ds = new DataSet();
            oledbda.Fill(ds);
            
            noPanier = ds.Tables[0].Rows.Count +1;
         

            return noPanier;
        }

        public static List<oProduit> ListerProduits()
        {
            List<oProduit> liste = new List<oProduit>();
            string condition = "1=1";
            OleDbConnection cn = new OleDbConnection(ConnectionString);
            oledbcmd = new OleDbCommand("SELECT * FROM Produits WHERE " + condition, cn);
            OleDbDataAdapter oledbda = new OleDbDataAdapter(oledbcmd);
            DataSet ds = new DataSet();
            oledbda.Fill(ds);

            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                oProduit produits = (oProduit)ds.Tables[0].Rows[i]["Produits"];

                liste.Add(produits);
            }

            return liste;
        }

        public static void AjouterCommande(int noPanier, string client, string produits, decimal total)
        {
            OleDbConnection cn = new OleDbConnection(AccesBD.ConnectionString);
            oledbcmd = new OleDbCommand("INSERT INTO [Paniers] VALUES (@p4, @p1, @p2, @p3)",cn);
            oledbcmd.Parameters.AddWithValue("@p4", noPanier);
            oledbcmd.Parameters.AddWithValue("@p1", client);
            //oledbcmd.Parameters["@p1"].Value = client;
            oledbcmd.Parameters.AddWithValue("@p2", produits);
            //oledbcmd.Parameters["@p2"].Value = produits;
            oledbcmd.Parameters.AddWithValue("@p3", total);
            //oledbcmd.Parameters["@p3"].Value = total;

            cn.Open();
            oledbcmd.ExecuteNonQuery();
            cn.Close();
        }

        public static oProduit RechercherProduit(int noProduit)
        {
            oProduit produit = new oProduit();
            OleDbConnection cn = new OleDbConnection(AccesBD.ConnectionString);
            //string requete = "SELECT CustomerID, ContactName, CompanyName FROM customers";
            oledbcmd = new OleDbCommand("SELECT * FROM Produits WHERE NoProduit = "+noProduit, cn);
            DataTable table = new DataTable();
            OleDbDataAdapter adapter = new OleDbDataAdapter(oledbcmd);
            adapter.Fill(table);

            object dbNoProduit = table.Rows[0]["NoProduit"];
            object dbNomProduit= table.Rows[0]["NomProduit"];
            object dbDescription = table.Rows[0]["Description"];
            object dbPrix = table.Rows[0]["Prix"];
            object dbTypeID = table.Rows[0]["TypeID"];
            object dbImage = table.Rows[0]["Image"];

            produit.NoProduit = Convert.ToInt32(dbNoProduit);
            produit.NomProduit = Convert.ToString(dbNomProduit);
            produit.Description = Convert.ToString(dbDescription);
            produit.Prix = Convert.ToDouble(dbPrix);
            produit.TypeID = Convert.ToInt32(dbTypeID);
            produit.Image = Convert.ToString(dbImage);

            return produit;
        }
    }
}